Инструкция по установке EAI почтового сервера под ОС Ubuntu 22.04 LTS: различия между версиями
Admin (обсуждение | вклад) |
Admin (обсуждение | вклад) |
||
(не показано 28 промежуточных версий этого же участника) | |||
Строка 8: | Строка 8: | ||
== Подготовка системы == | == Подготовка системы == | ||
1. Авторизуемся на удаленном сервере | |||
<pre>ssh root@62.109.26.140</pre> | |||
2. Обновляем систему | |||
<pre>apt update && apt upgrade -y && apt full-upgrade -y && apt dist-upgrade -y</pre> | |||
3. Очищаем систему | |||
127.0.1.1 xn----gtbdaqueeage2s.xn--p1ai доменное-имя.рф < | <pre>apt autoremove -y && apt clean -y && apt autoclean -y</pre> | ||
# | 4. Обновляем корневые сертификаты | ||
<pre>update-ca-certificates</pre> | |||
5. Устанавливаем необходимые утилиты | |||
<pre>apt install nano wget net-tools -y</pre> | |||
6. Настраиваем часовой пояс | |||
<pre>timedatectl set-timezone Europe/Moscow</pre> | |||
7. Настраиваем имя хоста | |||
hostnamectl set-hostname xn----gtbdaqueeage2s.xn--p1ai | |||
nano -l /etc/hosts | |||
8. и вносим | |||
127.0.0.1 localhost xn----gtbdaqueeage2s.xn--p1ai доменное-имя.рф | |||
127.0.1.1 xn----gtbdaqueeage2s.xn--p1ai доменное-имя.рф | |||
62.109.26.140 xn----gtbdaqueeage2s.xn--p1ai доменное-имя.рф | |||
9. Проверяем имя хоста | |||
<pre>hostname</pre> | |||
10. Перезагружаем систему | |||
<pre>reboot</pre> | |||
== Установка программных компонент == | |||
1. Устанавливаем необходимые пакеты Dovecot, Postfix и MariaDB | |||
<pre>cd && apt install postfix dovecot-core dovecot-imapd dovecot-lmtpd dovecot-pop3d mariadb-server dovecot-mysql postfix-mysql mailutils -y</pre> | |||
2. во время установки выбираем Internet Site и указываем имя домена xn----gtbdaqueeage2s.xn--p1ai | |||
3. Запускаем сервисы, включаем автозапуск и проверяем их статус | |||
systemctl start postfix && systemctl start dovecot && systemctl start mariadb | |||
systemctl enable postfix && systemctl enable dovecot && systemctl enable mariadb | |||
systemctl status postfix | |||
systemctl status dovecot | |||
systemctl status mariadb | |||
4. Отправляем тестовое письмо | |||
<pre>echo "Test mail" | mail -s "Test mail" happyzomb@ya.ru</pre> | |||
5. Настраиваем поддержку кодировки базы данных | |||
<pre>nano /etc/mysql/my.cnf</pre> | |||
6. и добавляем: | |||
[mysqld] | |||
character-set-server = utf8 | |||
collation-server = utf8_general_ci | |||
skip-character-set-client-handshake | |||
bind-address=127.0.0.1 | |||
datadir=/var/lib/mysql | |||
log-error=/var/log/mariadb.log | |||
pid-file=/tmp/mariadb.pid | |||
7. Завершаем установку MariaDB и проверяем статус службы | |||
<pre>usermod -d /var/lib/mysql/ mysql</pre><pre>systemctl restart mariadb && systemctl status mariadb | grep Active</pre> | |||
8. Проверяем, что службы Postfix, Dovecot и MariaDB запущены и слушают соответствующие порты | |||
<pre>netstat -tulnp</pre> | |||
== Настройка базы данных == | |||
1. Авторизуемся в MariaDB | |||
<pre>mysql -u root -p</pre> | |||
2. Создаем базу данных для Dovecot | |||
<pre>CREATE DATABASE eaimail;</pre> | |||
3. Выбираем базу данных | |||
<pre>USE eaimail;</pre> | |||
4. Настраиваем доступ | |||
<pre> | |||
GRANT SELECT, INSERT, UPDATE, DELETE ON eaimail.* TO 'dbuser'@'localhost' IDENTIFIED BY '6y5ljiB9j3M7'; | |||
GRANT SELECT, INSERT, UPDATE, DELETE ON eaimail.* TO 'dbuser'@'localhost.localdomain' IDENTIFIED BY '6y5ljiB9j3M7'; | |||
FLUSH PRIVILEGES; | |||
SHOW GRANTS FOR 'dbuser'@'localhost'; | |||
</pre> | |||
5. Создаем таблицы | |||
<pre>CREATE TABLE domains (domain varchar(50) NOT NULL, PRIMARY KEY (domain) ); | |||
CREATE TABLE forwardings (source varchar(80) NOT NULL, destination TEXT NOT NULL, PRIMARY KEY (source) ); | |||
CREATE TABLE users (email varchar(80) NOT NULL, password varchar(20) NOT NULL, PRIMARY KEY (email) ); | |||
</pre> | |||
6. Добавляем значения имени домена и адресов электронной почты | |||
<pre>INSERT INTO domains (domain) VALUES ('xn----gtbdaqueeage2s.xn--p1ai'); | |||
INSERT INTO domains (domain) VALUES ('доменное-имя.рф'); | |||
INSERT INTO users (email, password) VALUES ('info@xn----gtbdaqueeage2s.xn--p1ai', ENCRYPT('6y5ljiB9j3M7')); | |||
INSERT INTO users (email, password) VALUES ('info@доменное-имя.рф', ENCRYPT('6y5ljiB9j3M7')); | |||
</pre> | |||
7. Настраиваем переадресацию | |||
<pre>INSERT INTO forwardings (source,destination) VALUES ('info@доменное-имя.рф','info@xn----gtbdaqueeage2s.xn--p1ai');</pre> | |||
8. Выходим <pre>quit</pre> | |||
== Настройка почтового сервера == | |||
1. Настраиваем связь Postfix и MariaDB | |||
nano /etc/postfix/mysql-virtual_domains.cf | |||
2. и вносим: | |||
user = dbuser | |||
password = 6y5ljiB9j3M7 | |||
dbname = eaimail | |||
= SELECT domain AS virtual FROM domains WHERE domain='%s' | |||
hosts = 127.0.0.1 | |||
3. Настраиваем переадресацию | |||
nano /etc/postfix/mysql-virtual_forwardings.cf | |||
4. и вносим: | |||
user = dbuser | |||
password = 6y5ljiB9j3M7 | |||
dbname = eaimail | |||
query = SELECT destination FROM forwardings WHERE source='%s' | |||
hosts = 127.0.0.1 | |||
5. Настраиваем скрипт для создания виртуальных ящиков | |||
nano /etc/postfix/mysql-virtual_mailboxes.cf | |||
6. и вносим: | |||
user = dbuser | |||
password = 6y5ljiB9j3M7 | |||
dbname = eaimail | |||
query = SELECT CONCAT(SUBSTRING_INDEX(email,'@',-1),'/',SUBSTRING_INDEX(email,'@',1),'/') FROM users WHERE email='%s' | |||
hosts = 127.0.0.1 | |||
7. Настраиваем скрипт для переадресации на другой SMTP-сервер | |||
nano /etc/postfix/mysql-virtual_email2email.cf | |||
8. и вносим: | |||
user = dbuser | |||
password = 6y5ljiB9j3M7 | |||
dbname = eaimail | |||
query = SELECT email FROM users WHERE email='%s' | |||
hosts = 127.0.0.1 | |||
9. Устанавливаем права на конфигурационные файлы Postfix | |||
chmod 640 /etc/postfix/mysql-virtual_*.cf && chgrp postfix /etc/postfix/mysql-virtual_*.cf | |||
10. Создаем группу и пользователя для виртуальных адресов | |||
groupadd -g 5000 vmail && useradd -g vmail -u 5000 vmail -d /home/vmail -m | |||
11. Настраиваем Postfix для использования виртуального алиаса домена | |||
nano /etc/postfix/main.cf | |||
12. и изменяем: | |||
<pre> | |||
smtp_tls_security_level = may | |||
meta_directory = /etc/postfix | |||
shlib_directory = no | |||
myhostname = xn----gtbdaqueeage2s.xn--p1ai | |||
mydomain = xn----gtbdaqueeage2s.xn--p1ai | |||
mydestination = localhost, localhost.localdomain | |||
myorigin = $mydomain | |||
mynetworks = 127.0.0.1 | |||
smtpd_sasl_auth_enable = yes | |||
smtpd_sasl_type = dovecot | |||
smtpd_sasl_path = private/auth | |||
smtpd_sasl_authenticated_header = yes | |||
broken_sasl_auth_clients = yes | |||
smtpd_use_tls = yes | |||
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination | |||
smtpd_tls_auth_only = yes | |||
smtpd_tls_loglevel = 1 | |||
virtual_mailbox_base = /home/vmail | |||
virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql-virtual_mailboxes.cf | |||
virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql-virtual_domains.cf | |||
virtual_uid_maps = static:5000 | |||
virtual_gid_maps = static:5000 | |||
virtual_alias_domains = доменное-имя.рф | |||
virtual_transport = dovecot | |||
virtual_alias_maps = proxy:mysql:/etc/postfix/mysql-virtual_forwardings.cf, mysql:/etc/postfix/mysql-virtual_email2email.cf | |||
smtputf8_enable = yes | |||
proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps $relocated_maps $transport_maps $mynetworks | |||
</pre> | |||
13. Настраиваем службу Postfix | |||
nano /etc/postfix/master.cf | |||
14. и изменяем: | |||
<pre> | |||
smtp inet n - - - - smtpd | |||
flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f ${sender} | |||
-d ${recipient} | |||
</pre> | |||
15. Настраиваем логирование Postfix, перезапускаем и проверяем службу | |||
postconf maillog_file=/var/log/postfix.log | |||
systemctl restart postfix && systemctl status postfix | |||
16. Настраиваем Dovecot для подключения к базе данных | |||
nano /etc/dovecot/dovecot-sql.conf.ext | |||
17. и вносим: | |||
<pre> | |||
driver = mysql | |||
connect = host=127.0.0.1 dbname=eaimail user=dbuser password=6y5ljiB9j3M7 | |||
default_pass_scheme = CRYPT | |||
password_query = SELECT email as user, password FROM users WHERE email='%u'; | |||
</pre> | |||
18. Устанавливаем права CHMOD на конфигурационные файлы Dovecot | |||
chmod 640 /etc/dovecot/dovecot-sql.conf.ext && chgrp dovecot /etc/dovecot/dovecot-sql.conf.ext | |||
19. Резервируем конфигурационный файл Dovecot | |||
mv /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf-backup | |||
20. Настраиваем Dovecot | |||
nano /etc/dovecot/dovecot.conf | |||
21. и изменяем: | |||
<pre> | |||
protocols = imap pop3 lmtp | |||
log_timestamp = "%Y-%m-%d %H:%M:%S " | |||
mail_location = maildir:/home/vmail/%d/%n/Maildir | |||
namespace { | |||
type = private | |||
separator = . | |||
prefix = INBOX. | |||
inbox = yes | |||
} | |||
service auth { | |||
unix_listener auth-master { | |||
mode = 0600 | |||
user = vmail | |||
} | |||
unix_listener /var/spool/postfix/private/auth { | |||
mode = 0666 | |||
user = postfix | |||
group = postfix | |||
} | |||
user = root | |||
} | |||
auth_mechanisms = plain login | |||
service auth-worker { | |||
user = root | |||
} | |||
protocol lda { | |||
log_path = /home/vmail/dovecot-deliver.log | |||
auth_socket_path = /var/run/dovecot/auth-master | |||
postmaster_address = postmaster@xn----gtbdaqueeage2s.xn--p1ai | |||
} | |||
protocol pop3 { | |||
pop3_uidl_format = %08Xu%08Xv | |||
pop3_client_workarounds = outlook-no-nuls oe-ns-eoh | |||
} | |||
passdb { | |||
driver = sql | |||
args = /etc/dovecot/dovecot-sql.conf.ext | |||
} | |||
userdb { | |||
driver = static | |||
args = uid=5000 gid=5000 home=/home/vmail/%d/%n allow_all_users=yes | |||
} | |||
</pre> | |||
22. Перезагружаем Dovecot и проверяем статус службы | |||
systemctl restart dovecot && systemctl status dovecot | grep Active | |||
23. Настраиваем алиас | |||
nano /etc/aliases | |||
24. и добавляем: | |||
root: postmaster@xn----gtbdaqueeage2s.xn--p1ai | |||
25. Настраиваем логирование Dovecot | |||
nano /etc/dovecot/conf.d/10-logging.conf | |||
26. и добавляем: | |||
log_path = /var/log/dovecot.log | |||
auth_verbose = yes | |||
27. Исправляем ошибку подключения Dovecot к базе данных | |||
nano /etc/postfix/dynamicmaps.cf | |||
28. и заменяем: | |||
mysql /usr/lib/postfix/postfix-mysql.so dict_mysql_open | |||
29. Перезагружаем Postfix и Dovecot | |||
systemctl restart postfix && systemctl restart dovecot | |||
== Настройка почтового клиента == | |||
1. Создаем базу данных для веб-интерфейса Roundcube | |||
2. авторизуемся: | |||
mysql -u root | |||
3. создаем базу данных: | |||
CREATE DATABASE roundcubedb DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; | |||
4. создаем пользователя: | |||
CREATE USER rcuser@localhost IDENTIFIED BY '6y5ljiB9j3M7'; | |||
5. предоставляем ему права к базе данных: | |||
<pre> | |||
GRANT ALL PRIVILEGES ON roundcubedb.* TO rcuser@localhost; | |||
# Перезапускаем права | |||
FLUSH PRIVILEGES; | |||
# Выходим | |||
quit | |||
</pre> | |||
6. Устанавливаем Apache и PHP для веб-интерфейса Roundcube | |||
apt install apache2 php8.1 php8.1-gd php8.1-common php-json php-imagick php8.1-imap php8.1-xml php8.1-opcache php8.1-mbstring | |||
php8.1-curl php8.1-zip php8.1-ldap php8.1-mysqli php8.1-bz2 php8.1-intl -y | |||
7. Запускаем Apache, активируем автозапуск службы и проверяем статус | |||
systemctl start apache2 && systemctl enable apache2 && systemctl status apache2 | |||
8. Скачиваем архив с исходным кодом Roundcube | |||
cd /tmp && wget https://github.com/roundcube/roundcubemail/releases/download/1.5.2/roundcubemail-1.5.2-complete.tar.gz | |||
9. Распаковываем архив | |||
tar xvf roundcubemail-1.5.2-complete.tar.gz | |||
10. Копируем файлы Roundcube в корневой каталог Apache | |||
mv roundcubemail-1.5.2/* /var/www/html/ | |||
11. Назначаем права CHMOD на корневой каталог и файлы Roundcube | |||
chown www-data:www-data -R /var/www && chmod -R 775 /var/www | |||
12. Импортируем дамп базы данных Roundcube в MariaDB | |||
cd /var/www/html && mysql -u rcuser -p roundcubedb < /var/www/html/SQL/mysql.initial.sql | |||
13. Настраиваем Apache для работы Roundcube - задаем имя хоста, индексный файл и предоствляем права на корневой каталог | |||
nano /etc/apache2/sites-enabled/000-default.conf | |||
14. и вносим: | |||
<pre> | |||
<VirtualHost *:80> | |||
ServerName xn----gtbdaqueeage2s.xn--p1ai | |||
ServerAdmin webmaster@xn----gtbdaqueeage2s.xn--p1ai | |||
DocumentRoot /var/www/html | |||
ErrorLog ${APACHE_LOG_DIR}/roundcube_error.log | |||
CustomLog ${APACHE_LOG_DIR}/roundcube_access.log combined | |||
<Directory /> | |||
Options FollowSymLinks | |||
AllowOverride All | |||
Require all granted | |||
</Directory> | |||
<Directory /var/www/html/> | |||
Options FollowSymLinks MultiViews | |||
AllowOverride All | |||
Order allow,deny | |||
allow from all | |||
Require all granted | |||
DirectoryIndex index.php | |||
</Directory> | |||
</VirtualHost> | |||
</pre> | |||
15. Перезапускаем Apache и проверяем статус службы | |||
systemctl reload apache2 && systemctl status apache2 | |||
16. Отключаем авторизацию Roundcube в почтовый сервер, так как почтовый сервер находится на localhost | |||
nano /var/www/html/config/defaults.inc.php | |||
17. и изменяем: | |||
$config['smtp_user'] = ''; | |||
$config['smtp_pass'] = ''; | |||
18. Переходим по ссылке и завершаем установку Roundcube | |||
http://доменное-имя.рф/installer/ | |||
19. В качестве адресов подключения указываем localhost, порт 143 для входящей электронной почты и 25 для исходящей | |||
20. Проходим тесты подключения и завершаем настройку, затем переименовываем папку installer командой: | |||
mv /var/www/html/installer/ /var/www/html/installer_old/ | |||
== Настройка межсетевого экрана == | |||
1. Настраиваем фаерволл | |||
apt install ufw -y | |||
2. Настраиваем правила фаерволла | |||
ufw default deny incoming && ufw default allow outgoing | |||
ufw allow 22 && ufw allow 25 && ufw allow 80 && ufw allow 443 && ufw allow 465 && ufw allow 143 && ufw allow 993 && ufw allow 995 | |||
ufw enable | |||
3. Проверяем список правил и статус службы фаерволла | |||
ufw verbose numbered | |||
systemctl status ufw | |||
4. Установка и настройка завершена! Перезагружаем удаленный сервер | |||
reboot | |||
5. Авторизация в веб-интерфейсе Roundcube должна работать для обоих адресов - info@xn----gtbdaqueeage2s.xn--p1ai и info@доменное-имя.рф. При отправке писем на любой из этих адресов письма должны доходить равнозначно! |
Текущая версия от 13:23, 27 июня 2022
Установка EAI почтового сервера
С помощью данной инструкции вы сможете установить почтовый сервер с поддержкой использования интернационализированных адресов электронной почты (EAI) на базе ПО с открытым исходным кодом. Почтовый сервер можно развивать далее с помощью другого ПО. Хостинг-провайдер должен изменить PTR-запись для домена на ваш IDN-домен. Проверить запись PTR можно при помощи любого внешнего инструмента.
Например: https://www.whatsmydns.net/#PTR/62.109.26.140
Подготовка системы
1. Авторизуемся на удаленном сервере
ssh root@62.109.26.140
2. Обновляем систему
apt update && apt upgrade -y && apt full-upgrade -y && apt dist-upgrade -y
3. Очищаем систему
apt autoremove -y && apt clean -y && apt autoclean -y
4. Обновляем корневые сертификаты
update-ca-certificates
5. Устанавливаем необходимые утилиты
apt install nano wget net-tools -y
6. Настраиваем часовой пояс
timedatectl set-timezone Europe/Moscow
7. Настраиваем имя хоста
hostnamectl set-hostname xn----gtbdaqueeage2s.xn--p1ai nano -l /etc/hosts
8. и вносим
127.0.0.1 localhost xn----gtbdaqueeage2s.xn--p1ai доменное-имя.рф 127.0.1.1 xn----gtbdaqueeage2s.xn--p1ai доменное-имя.рф 62.109.26.140 xn----gtbdaqueeage2s.xn--p1ai доменное-имя.рф
9. Проверяем имя хоста
hostname
10. Перезагружаем систему
reboot
Установка программных компонент
1. Устанавливаем необходимые пакеты Dovecot, Postfix и MariaDB
cd && apt install postfix dovecot-core dovecot-imapd dovecot-lmtpd dovecot-pop3d mariadb-server dovecot-mysql postfix-mysql mailutils -y
2. во время установки выбираем Internet Site и указываем имя домена xn----gtbdaqueeage2s.xn--p1ai
3. Запускаем сервисы, включаем автозапуск и проверяем их статус
systemctl start postfix && systemctl start dovecot && systemctl start mariadb systemctl enable postfix && systemctl enable dovecot && systemctl enable mariadb systemctl status postfix systemctl status dovecot systemctl status mariadb
4. Отправляем тестовое письмо
echo "Test mail" | mail -s "Test mail" happyzomb@ya.ru
5. Настраиваем поддержку кодировки базы данных
nano /etc/mysql/my.cnf
6. и добавляем:
[mysqld] character-set-server = utf8 collation-server = utf8_general_ci skip-character-set-client-handshake bind-address=127.0.0.1 datadir=/var/lib/mysql log-error=/var/log/mariadb.log pid-file=/tmp/mariadb.pid
7. Завершаем установку MariaDB и проверяем статус службы
usermod -d /var/lib/mysql/ mysql
systemctl restart mariadb && systemctl status mariadb | grep Active
8. Проверяем, что службы Postfix, Dovecot и MariaDB запущены и слушают соответствующие порты
netstat -tulnp
Настройка базы данных
1. Авторизуемся в MariaDB
mysql -u root -p
2. Создаем базу данных для Dovecot
CREATE DATABASE eaimail;
3. Выбираем базу данных
USE eaimail;
4. Настраиваем доступ
GRANT SELECT, INSERT, UPDATE, DELETE ON eaimail.* TO 'dbuser'@'localhost' IDENTIFIED BY '6y5ljiB9j3M7'; GRANT SELECT, INSERT, UPDATE, DELETE ON eaimail.* TO 'dbuser'@'localhost.localdomain' IDENTIFIED BY '6y5ljiB9j3M7'; FLUSH PRIVILEGES; SHOW GRANTS FOR 'dbuser'@'localhost';
5. Создаем таблицы
CREATE TABLE domains (domain varchar(50) NOT NULL, PRIMARY KEY (domain) ); CREATE TABLE forwardings (source varchar(80) NOT NULL, destination TEXT NOT NULL, PRIMARY KEY (source) ); CREATE TABLE users (email varchar(80) NOT NULL, password varchar(20) NOT NULL, PRIMARY KEY (email) );
6. Добавляем значения имени домена и адресов электронной почты
INSERT INTO domains (domain) VALUES ('xn----gtbdaqueeage2s.xn--p1ai'); INSERT INTO domains (domain) VALUES ('доменное-имя.рф'); INSERT INTO users (email, password) VALUES ('info@xn----gtbdaqueeage2s.xn--p1ai', ENCRYPT('6y5ljiB9j3M7')); INSERT INTO users (email, password) VALUES ('info@доменное-имя.рф', ENCRYPT('6y5ljiB9j3M7'));
7. Настраиваем переадресацию
INSERT INTO forwardings (source,destination) VALUES ('info@доменное-имя.рф','info@xn----gtbdaqueeage2s.xn--p1ai');
8. Выходим
quit
Настройка почтового сервера
1. Настраиваем связь Postfix и MariaDB
nano /etc/postfix/mysql-virtual_domains.cf
2. и вносим:
user = dbuser password = 6y5ljiB9j3M7 dbname = eaimail = SELECT domain AS virtual FROM domains WHERE domain='%s' hosts = 127.0.0.1
3. Настраиваем переадресацию
nano /etc/postfix/mysql-virtual_forwardings.cf
4. и вносим:
user = dbuser password = 6y5ljiB9j3M7 dbname = eaimail query = SELECT destination FROM forwardings WHERE source='%s' hosts = 127.0.0.1
5. Настраиваем скрипт для создания виртуальных ящиков
nano /etc/postfix/mysql-virtual_mailboxes.cf
6. и вносим:
user = dbuser password = 6y5ljiB9j3M7 dbname = eaimail query = SELECT CONCAT(SUBSTRING_INDEX(email,'@',-1),'/',SUBSTRING_INDEX(email,'@',1),'/') FROM users WHERE email='%s' hosts = 127.0.0.1
7. Настраиваем скрипт для переадресации на другой SMTP-сервер
nano /etc/postfix/mysql-virtual_email2email.cf
8. и вносим:
user = dbuser password = 6y5ljiB9j3M7 dbname = eaimail query = SELECT email FROM users WHERE email='%s' hosts = 127.0.0.1
9. Устанавливаем права на конфигурационные файлы Postfix
chmod 640 /etc/postfix/mysql-virtual_*.cf && chgrp postfix /etc/postfix/mysql-virtual_*.cf
10. Создаем группу и пользователя для виртуальных адресов
groupadd -g 5000 vmail && useradd -g vmail -u 5000 vmail -d /home/vmail -m
11. Настраиваем Postfix для использования виртуального алиаса домена
nano /etc/postfix/main.cf
12. и изменяем:
smtp_tls_security_level = may meta_directory = /etc/postfix shlib_directory = no myhostname = xn----gtbdaqueeage2s.xn--p1ai mydomain = xn----gtbdaqueeage2s.xn--p1ai mydestination = localhost, localhost.localdomain myorigin = $mydomain mynetworks = 127.0.0.1 smtpd_sasl_auth_enable = yes smtpd_sasl_type = dovecot smtpd_sasl_path = private/auth smtpd_sasl_authenticated_header = yes broken_sasl_auth_clients = yes smtpd_use_tls = yes smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination smtpd_tls_auth_only = yes smtpd_tls_loglevel = 1 virtual_mailbox_base = /home/vmail virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql-virtual_mailboxes.cf virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql-virtual_domains.cf virtual_uid_maps = static:5000 virtual_gid_maps = static:5000 virtual_alias_domains = доменное-имя.рф virtual_transport = dovecot virtual_alias_maps = proxy:mysql:/etc/postfix/mysql-virtual_forwardings.cf, mysql:/etc/postfix/mysql-virtual_email2email.cf smtputf8_enable = yes proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps $relocated_maps $transport_maps $mynetworks
13. Настраиваем службу Postfix
nano /etc/postfix/master.cf
14. и изменяем:
smtp inet n - - - - smtpd flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f ${sender} -d ${recipient}
15. Настраиваем логирование Postfix, перезапускаем и проверяем службу
postconf maillog_file=/var/log/postfix.log systemctl restart postfix && systemctl status postfix
16. Настраиваем Dovecot для подключения к базе данных
nano /etc/dovecot/dovecot-sql.conf.ext
17. и вносим:
driver = mysql connect = host=127.0.0.1 dbname=eaimail user=dbuser password=6y5ljiB9j3M7 default_pass_scheme = CRYPT password_query = SELECT email as user, password FROM users WHERE email='%u';
18. Устанавливаем права CHMOD на конфигурационные файлы Dovecot
chmod 640 /etc/dovecot/dovecot-sql.conf.ext && chgrp dovecot /etc/dovecot/dovecot-sql.conf.ext
19. Резервируем конфигурационный файл Dovecot
mv /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf-backup
20. Настраиваем Dovecot
nano /etc/dovecot/dovecot.conf
21. и изменяем:
protocols = imap pop3 lmtp log_timestamp = "%Y-%m-%d %H:%M:%S " mail_location = maildir:/home/vmail/%d/%n/Maildir namespace { type = private separator = . prefix = INBOX. inbox = yes } service auth { unix_listener auth-master { mode = 0600 user = vmail } unix_listener /var/spool/postfix/private/auth { mode = 0666 user = postfix group = postfix } user = root } auth_mechanisms = plain login service auth-worker { user = root } protocol lda { log_path = /home/vmail/dovecot-deliver.log auth_socket_path = /var/run/dovecot/auth-master postmaster_address = postmaster@xn----gtbdaqueeage2s.xn--p1ai } protocol pop3 { pop3_uidl_format = %08Xu%08Xv pop3_client_workarounds = outlook-no-nuls oe-ns-eoh } passdb { driver = sql args = /etc/dovecot/dovecot-sql.conf.ext } userdb { driver = static args = uid=5000 gid=5000 home=/home/vmail/%d/%n allow_all_users=yes }
22. Перезагружаем Dovecot и проверяем статус службы
systemctl restart dovecot && systemctl status dovecot | grep Active
23. Настраиваем алиас
nano /etc/aliases
24. и добавляем:
root: postmaster@xn----gtbdaqueeage2s.xn--p1ai
25. Настраиваем логирование Dovecot
nano /etc/dovecot/conf.d/10-logging.conf
26. и добавляем:
log_path = /var/log/dovecot.log auth_verbose = yes
27. Исправляем ошибку подключения Dovecot к базе данных
nano /etc/postfix/dynamicmaps.cf
28. и заменяем:
mysql /usr/lib/postfix/postfix-mysql.so dict_mysql_open
29. Перезагружаем Postfix и Dovecot
systemctl restart postfix && systemctl restart dovecot
Настройка почтового клиента
1. Создаем базу данных для веб-интерфейса Roundcube 2. авторизуемся:
mysql -u root
3. создаем базу данных:
CREATE DATABASE roundcubedb DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
4. создаем пользователя:
CREATE USER rcuser@localhost IDENTIFIED BY '6y5ljiB9j3M7';
5. предоставляем ему права к базе данных:
GRANT ALL PRIVILEGES ON roundcubedb.* TO rcuser@localhost; # Перезапускаем права FLUSH PRIVILEGES; # Выходим quit
6. Устанавливаем Apache и PHP для веб-интерфейса Roundcube
apt install apache2 php8.1 php8.1-gd php8.1-common php-json php-imagick php8.1-imap php8.1-xml php8.1-opcache php8.1-mbstring php8.1-curl php8.1-zip php8.1-ldap php8.1-mysqli php8.1-bz2 php8.1-intl -y
7. Запускаем Apache, активируем автозапуск службы и проверяем статус
systemctl start apache2 && systemctl enable apache2 && systemctl status apache2
8. Скачиваем архив с исходным кодом Roundcube
cd /tmp && wget https://github.com/roundcube/roundcubemail/releases/download/1.5.2/roundcubemail-1.5.2-complete.tar.gz
9. Распаковываем архив
tar xvf roundcubemail-1.5.2-complete.tar.gz
10. Копируем файлы Roundcube в корневой каталог Apache
mv roundcubemail-1.5.2/* /var/www/html/
11. Назначаем права CHMOD на корневой каталог и файлы Roundcube
chown www-data:www-data -R /var/www && chmod -R 775 /var/www
12. Импортируем дамп базы данных Roundcube в MariaDB
cd /var/www/html && mysql -u rcuser -p roundcubedb < /var/www/html/SQL/mysql.initial.sql
13. Настраиваем Apache для работы Roundcube - задаем имя хоста, индексный файл и предоствляем права на корневой каталог
nano /etc/apache2/sites-enabled/000-default.conf
14. и вносим:
<VirtualHost *:80> ServerName xn----gtbdaqueeage2s.xn--p1ai ServerAdmin webmaster@xn----gtbdaqueeage2s.xn--p1ai DocumentRoot /var/www/html ErrorLog ${APACHE_LOG_DIR}/roundcube_error.log CustomLog ${APACHE_LOG_DIR}/roundcube_access.log combined <Directory /> Options FollowSymLinks AllowOverride All Require all granted </Directory> <Directory /var/www/html/> Options FollowSymLinks MultiViews AllowOverride All Order allow,deny allow from all Require all granted DirectoryIndex index.php </Directory> </VirtualHost>
15. Перезапускаем Apache и проверяем статус службы
systemctl reload apache2 && systemctl status apache2
16. Отключаем авторизацию Roundcube в почтовый сервер, так как почтовый сервер находится на localhost
nano /var/www/html/config/defaults.inc.php
17. и изменяем:
$config['smtp_user'] = ; $config['smtp_pass'] = ;
18. Переходим по ссылке и завершаем установку Roundcube
http://доменное-имя.рф/installer/
19. В качестве адресов подключения указываем localhost, порт 143 для входящей электронной почты и 25 для исходящей 20. Проходим тесты подключения и завершаем настройку, затем переименовываем папку installer командой:
mv /var/www/html/installer/ /var/www/html/installer_old/
Настройка межсетевого экрана
1. Настраиваем фаерволл
apt install ufw -y
2. Настраиваем правила фаерволла
ufw default deny incoming && ufw default allow outgoing ufw allow 22 && ufw allow 25 && ufw allow 80 && ufw allow 443 && ufw allow 465 && ufw allow 143 && ufw allow 993 && ufw allow 995 ufw enable
3. Проверяем список правил и статус службы фаерволла
ufw verbose numbered systemctl status ufw
4. Установка и настройка завершена! Перезагружаем удаленный сервер
reboot
5. Авторизация в веб-интерфейсе Roundcube должна работать для обоих адресов - info@xn----gtbdaqueeage2s.xn--p1ai и info@доменное-имя.рф. При отправке писем на любой из этих адресов письма должны доходить равнозначно!